package chapter8;

import chapter6.Print;

import java.util.stream.IntStream;

/**
 * Java8提供的Stream测试，该类测试IntStream
 * 下边的代码每次执行一行，流的方法分为中间方法和末端方法
 * 中间方法如map，允许流保持打开状态，并允许直接调用后续方法
 * 末端方法是对流的最终操作，执行末端方法后流会被消耗掉，不可再用。
 * 所以下边的max,min,sum,count这些都是末端方法，一次只能执行一个
 */
public class IntStreamTest {
    public static void main(String[] args) {
        IntStream is = IntStream.builder()
                .add(20).add(13).add(-2).add(18).build();
        //System.out.println("is所有元素的最大值:" + is.max().getAsInt());
        //System.out.println("is所有元素的最小值:" + is.min().getAsInt());
        //System.out.println("is所有元素的总和为:" + is.sum());
        //System.out.println("is所有元素的总数为:" + is.count());
        //System.out.println("is所有元素的平均值为:" + is.average().getAsDouble());
        //System.out.println("is所有元素的平方是否都大于20:" +
                //is.allMatch((ele)-> ele * ele > 20));
        //System.out.println("is是否包含任何元素的平方大于20:" +
                //is.anyMatch((ele)-> ele * ele > 20));
        IntStream newIs = is.map((ele)-> ele * 2 +1);
        newIs.forEach(System.out::println);
    }
}
